const Router = require('koa-router')
const userValidate = require('@/middlewares/validateMiddlewares/userValidate')
const userController = require('@/controller/userController.js')
const { verifyToken } = require('@/utils/jwt')

const router = new Router()

/**
 * 用户注册
 */
router.post('/register', userValidate.registerValidate, userController.register)

/**
 * 用户登录
 */
router.post('/login', userValidate.loginValidate, userController.login)

/**
 * 用户刷新token
 */
router.get('/reflesh', verifyToken(true, true), userController.login)

/**
 * 用户退出登录
 */
router.post('/loginOut', verifyToken(), userController.loginOut)

/**
 * 检查用户信息
 */
router.post(
  '/checkUserInfo',
  userValidate.checkUserInfoValidate,
  userController.checkUserInfo
)

/**
 * 获取用户个人信息
 */
router.get('/info', verifyToken(), userController.getUserInfo)

/**
 * 更新用户个人信息
 */
router.put(
  '/infoUpdate',
  verifyToken(),
  userValidate.updateUserInfoValidate,
  userController.updateUserInfo
)

/**
 * 用户找回密码
 */

router.put(
  '/findPwd',
  userValidate.userFindPwdValidate,
  userController.userFindPwd
)

/**
 * 批量启用/禁用用户账号
 */
router.put(
  '/status',
  verifyToken(),
  userValidate.setUserStatusValidate,
  userController.setUserStatus
)

/**
 * 批量删除用户账号
 */
router.delete(
  '/delete',
  userValidate.validateSlideCode(),
  verifyToken(),
  userValidate.delUsersValidate,
  userController.delUsers
)

/**
 * 用户列表查询
 */
router.get(
  '/list',
  verifyToken(),
  userValidate.listUsersValidate,
  userController.listUsers
)

/**
 * 向用户发送验证码
 */
// const initSendCodeRouter = () => {
router.post(
  '/sendCode',
  // 按情况传入true或者false，需要验证图片验证码
  userValidate.validateSlideCode(true),
  userValidate.sendEmailCodeValidate,
  userController.sendEmailCode
)
// }

/**
 * 向用户发送滑块验证码
 */
router.get('/slideCode', userController.sendSlideCode)

/**
 * 用户获取自己拥有的权限列表
 */
router.get(
  '/permission/list',
  verifyToken(),
  userController.listUserPermissions
)

module.exports = router
